﻿namespace RuoVea.OmiApi.Upload.Service.Dto;

/// <summary>
/// 文件类型路径映射配置
/// 用于根据文件类型分类存储到不同目录，支持分类特定配置
/// </summary>
public class FileTypePathMapping
{
    /// <summary>
    /// 文件分类名称（例如：Images, Documents, Videos）
    /// </summary>
    public string Category { get; set; } = string.Empty;

    /// <summary>
    /// 该分类对应的文件扩展名数组
    /// 使用 "*" 表示匹配所有扩展名
    /// </summary>
    public string[] Extensions { get; set; } = Array.Empty<string>();

    /// <summary>
    /// 该分类对应的MIME类型数组
    /// 使用 "*" 表示匹配所有MIME类型
    /// </summary>
    public string[] MimeTypes { get; set; } = Array.Empty<string>();

    /// <summary>
    /// 该分类文件的存储路径（相对于上传根目录）
    /// </summary>
    public string StoragePath { get; set; } = string.Empty;

    /// <summary>
    /// 该分类的最大文件大小限制（字节）
    /// 0表示使用全局配置
    /// </summary>
    public long MaxFileSize { get; set; }

    /// <summary>
    /// 该分类是否使用原始文件名
    /// null表示使用全局配置
    /// </summary>
    public bool? UseOriginalFileName { get; set; }

    /// <summary>
    /// 该分类的文件名最大长度限制
    /// 0表示使用全局配置
    /// </summary>
    public int MaxFileNameLength { get; set; }

    /// <summary>
    /// 该分类是否覆盖已存在的文件
    /// null表示使用全局配置
    /// </summary>
    public bool? OverwriteExisting { get; set; }
}
